﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Collections.Generic;

/// <summary>
/// 上传文件控制类
/// </summary>
/******************************************************************************************
 ** 文件名：	UploadFileComponent
 ** 创建人：	Tony Mucor
 ** 日期：	2013-08-14
 *****************************************************************************************/
public class UploadFileComponent
{
	private UploadFileDB clsDate;

	public UploadFileComponent()
	{
		clsDate = new UploadFileDB();
	}

	#region 实体与数据的映射
	/// <summary>
	/// 把实体对象映射到数据库
	/// </summary>
	/**********************************************************************************************
	 ** 功能描述：	把实体对象映射到数据库
	 ** 输入参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-08-14
	 ** 修改：
	 ** 日期：
	 *********************************************************************************************/
	private void EntityToDatabase(UploadFile clsUploadFile)
	{
		clsDate.arrTableColumnValue[0] = clsUploadFile.ID.ToString();
		clsDate.arrTableColumnValue[1] = clsUploadFile.FileName;
		clsDate.arrTableColumnValue[2] = clsUploadFile.Path;
		clsDate.arrTableColumnValue[3] = clsUploadFile.ColumnID.ToString();
		clsDate.arrTableColumnValue[4] = clsUploadFile.ShowDate;
		clsDate.arrTableColumnValue[5] = clsUploadFile.DateTime;
		clsDate.arrTableColumnValue[6] = clsUploadFile.Count.ToString();
		clsDate.arrTableColumnValue[7] = clsUploadFile.UserID.ToString();
		clsDate.arrTableColumnValue[8] = clsUploadFile.Status.ToString();
		clsDate.arrTableColumnValue[9] = Convert.ToBase64String(clsUploadFile.Content);
		clsDate.arrTableColumnValue[10] = clsUploadFile.Type;
	}
	
	/// <summary>
	/// 把数据库映射到实体对象
	/// </summary>
	/**********************************************************************************************
	 ** 功能描述：	把数据库映射到实体对象
	 ** 输入参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-08-14
	 ** 修改：
	 ** 日期：
	 *********************************************************************************************/
	private UploadFile DatabaseToEntity(DataRow dr)
	{
		UploadFile clsUploadFile;

		clsUploadFile = new UploadFile();

		if (dr != null)
		{
			clsUploadFile.ID = Convert.ToInt32(dr[clsDate.arrTableColumnName[0]]);
			clsUploadFile.FileName = dr[clsDate.arrTableColumnName[1]].ToString();
			clsUploadFile.ShortFileName = System.IO.Path.GetFileNameWithoutExtension(clsUploadFile.FileName);
			clsUploadFile.Path = dr[clsDate.arrTableColumnName[2]].ToString();
			clsUploadFile.ColumnID = Convert.ToInt32(dr[clsDate.arrTableColumnName[3]].ToString());
			clsUploadFile.ShowDate = dr[clsDate.arrTableColumnName[4]].ToString();
			clsUploadFile.DateTime = dr[clsDate.arrTableColumnName[5]].ToString();
			clsUploadFile.Count = Convert.ToInt32(dr[clsDate.arrTableColumnName[6]].ToString());
			clsUploadFile.UserID = Convert.ToInt32(dr[clsDate.arrTableColumnName[7]].ToString());
			clsUploadFile.Status = Convert.ToInt32(dr[clsDate.arrTableColumnName[8]].ToString());
			clsUploadFile.Content = Convert.FromBase64String(dr[clsDate.arrTableColumnName[9]].ToString().Trim());
			clsUploadFile.Type = dr[clsDate.arrTableColumnName[10]].ToString();
		}

		return clsUploadFile;
	}

	#endregion

	#region 添加、修改、删除操作

	/// <summary>
	/// 添加
	/// </summary>
	/**********************************************************************************************
	 ** 功能描述：	添加
	 ** 输入参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-08-14
	 ** 修改：
	 ** 日期：
	 *********************************************************************************************/
	public Boolean Add(UploadFile clsAddUploadFile)
	{
		EntityToDatabase(clsAddUploadFile);
		return clsDate.Add();
	}

	/// <summary>
	/// 修改
	/// </summary>
	/**********************************************************************************************
	 ** 功能描述：	修改
	 ** 输入参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-08-14
	 ** 修改：
	 ** 日期：
	 *********************************************************************************************/
	public Boolean Modify(UploadFile clsModifyUploadFile)
	{
		EntityToDatabase(clsModifyUploadFile);
		return clsDate.Modify();
	}

	/// <summary>
	/// 删除
	/// </summary>
	/**********************************************************************************************
	 ** 功能描述：	删除
	 ** 输入参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-08-14
	 ** 修改：
	 ** 日期：
	 *********************************************************************************************/
	public Boolean Delete(UploadFile clsDeleteUploadFile)
	{
		EntityToDatabase(clsDeleteUploadFile);
		return clsDate.Delete();
	}

	#endregion

	#region 查询

	/// <summary>
	/// 根据ID查询一个上传文件实体
	/// </summary>
	/**********************************************************************************************
	 ** 功能描述：	根据ID查询一个上传文件实体
	 ** 输入参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-08-14
	 ** 修改：
	 ** 日期：
	 *********************************************************************************************/
	public UploadFile GetOne(int nID)
	{
		return DatabaseToEntity(clsDate.QueryOneToDataRow(nID));
	}

	/// <summary>
	/// 根据上传文件的栏目查询文件
	/// </summary>
	/**********************************************************************************************
	 ** 功能描述：	根据上传文件的栏目查询文件
	 ** 输入参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-08-15
	 ** 修改：
	 ** 日期：
	 *********************************************************************************************/
	public List<UploadFile> QueryFiles(int nColumnID)
	{
		DataTable dt;
		List<UploadFile> listReturn;

		listReturn = new List<UploadFile>();

		dt = clsDate.QueryFiles(nColumnID);

		if (dt.Rows.Count > 0)
		{
			foreach (DataRow dr in dt.Rows)
			{
				listReturn.Add(DatabaseToEntity(dr));
			}
			return listReturn;
		}
		else
		{
			return null;
		}
	}
	#endregion
}
